package com.sunni.反射;

import com.sunni.反射.entity.Person;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

public class _04_Method成员方法类 {

/*
            * 获取成员方法的意义：执行它！invoke(Object 对象名);

            - 获取++public权限++修饰的成员方法
            * Method[] getConstructors()   -- 获取全部
            * Method getConstructor(String name)   -- 获取指定

            - 获取<u>所有权限</u>修饰的成员方法
            * Method[] getDeclaredConstructors()
            * Method getDeclaredConstructor(String name)
* */
    public static void main(String[] args) throws Exception {
        // 0.获取类对象
        Class personClass = Person.class;

        // 1. Method[] getMethods(); 获取 '所有的 public权限的' 成员方法
        Method[] methods = personClass.getMethods();
        for (Method method : methods) {
            System.out.println("method = " + method);
        }
        System.out.println("=======");

        // 2. Method getMethod(); 获取 '指定的 public权限的' 成员方法
        Method testMethod = personClass.getMethod("test");
        testMethod.invoke(new Person());

        // 3. getName(); 获取方法名
        String methodName = personClass.getMethod("test").getName();
        System.out.println("methodName = " + methodName);
    }

}
